/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.wcs.newsletter.util;
/*
* #%L
* Webstar Newsletter
* %%
* Copyright (C) 2013 Webstar Csoport Kft.
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
/**
*
* @author csaba
*/
import java.util.Iterator;
import javax.faces.FacesException;
import javax.faces.application.NavigationHandler;
import javax.faces.application.ViewExpiredException;
import javax.faces.context.ExceptionHandler;
import javax.faces.context.ExceptionHandlerWrapper;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ExceptionQueuedEvent;
import javax.faces.event.ExceptionQueuedEventContext;
public class WcsExceptionHandler extends ExceptionHandlerWrapper {
private ExceptionHandler wrapped;
public WcsExceptionHandler(ExceptionHandler wrapped) {
this.wrapped = wrapped;
}
@Override
public ExceptionHandler getWrapped() {
return this.wrapped;
}
@Override
public void handle() throws FacesException {
Iterable<ExceptionQueuedEvent> events = this.wrapped.getUnhandledExceptionQueuedEvents();
for(Iterator<ExceptionQueuedEvent> it = events.iterator(); it.hasNext();) {
ExceptionQueuedEvent event = it.next();
ExceptionQueuedEventContext eqec = event.getContext();
System.out.println("eqec.getException()"+eqec.getException());
if(eqec.getException() instanceof ViewExpiredException || eqec.getException() instanceof AbortProcessingException) {
FacesContext context = eqec.getContext();
NavigationHandler navHandler = context.getApplication().getNavigationHandler();
try {
navHandler.handleNavigation(context, null, "main.xhtml?faces-redirect=true&expired=true");
}
catch(Exception e){
System.out.println("exp"+e);
}
finally {
it.remove();
}
}
}
this.wrapped.handle();;
}
}